home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / glibmm-2.4 / proc / m4 / enum.m4 < prev    next >
Text File  |  2006-04-20  |  3KB  |  102 lines

  1.  
  2. dnl
  3. dnl _ENUM(cpp_type, c_type, value_suffix, `element_list', `flags', `optional_refdoc_comment', 'get_type_function_name')
  4. dnl
  5. m4_define(`_ENUM',`dnl
  6. _PUSH()
  7.  
  8. m4_define(`__ENUM_CPPNAME__',`$1')
  9. m4_define(`__ENUM_CNAME__',`$2')
  10. m4_define(`__ENUM_VALUE_BASE__',`Glib::Value_$3<__NAMESPACE__::__ENUM_CPPNAME__>')
  11.  
  12. _POP()
  13. dnl
  14. dnl // Define a new Doxygen group if this is the first enum in the file.
  15. dnl
  16. m4_ifdef(`__DOCGROUP_'__MODULE_CANONICAL__`_ENUMS__',,`dnl else
  17. m4_define(`__DOCGROUP_'__MODULE_CANONICAL__`_ENUMS__')dnl
  18. /** @addtogroup '__MODULE_CANONICAL__`Enums Enums and Flags */
  19.  
  20. ')dnl endif
  21. dnl
  22. dnl
  23. /**$6
  24.  * @ingroup __MODULE_CANONICAL__`'Enums
  25. m4_ifelse($3,Flags,`dnl
  26.  * @par Bitwise operators:
  27.  * <tt>%__ENUM_CPPNAME__ operator|(__ENUM_CPPNAME__, __ENUM_CPPNAME__)</tt><br>
  28.  * <tt>%__ENUM_CPPNAME__ operator&(__ENUM_CPPNAME__, __ENUM_CPPNAME__)</tt><br>
  29.  * <tt>%__ENUM_CPPNAME__ operator^(__ENUM_CPPNAME__, __ENUM_CPPNAME__)</tt><br>
  30.  * <tt>%__ENUM_CPPNAME__ operator~(__ENUM_CPPNAME__)</tt><br>
  31.  * <tt>%__ENUM_CPPNAME__& operator|=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)</tt><br>
  32.  * <tt>%__ENUM_CPPNAME__& operator&=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)</tt><br>
  33.  * <tt>%__ENUM_CPPNAME__& operator^=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)</tt><br>
  34. ')dnl endif
  35.  */
  36. enum __ENUM_CPPNAME__
  37. {
  38. $4
  39. };
  40. m4_ifelse($3,Flags,`dnl
  41.  
  42. /** @ingroup __MODULE_CANONICAL__`'Enums */
  43. inline __ENUM_CPPNAME__ operator|(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs)
  44.   { return static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
  45.  
  46. /** @ingroup __MODULE_CANONICAL__`'Enums */
  47. inline __ENUM_CPPNAME__ operator&(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs)
  48.   { return static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
  49.  
  50. /** @ingroup __MODULE_CANONICAL__`'Enums */
  51. inline __ENUM_CPPNAME__ operator^(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs)
  52.   { return static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
  53.  
  54. /** @ingroup __MODULE_CANONICAL__`'Enums */
  55. inline __ENUM_CPPNAME__ operator~(__ENUM_CPPNAME__ flags)
  56.   { return static_cast<__ENUM_CPPNAME__>(~static_cast<unsigned>(flags)); }
  57.  
  58. /** @ingroup __MODULE_CANONICAL__`'Enums */
  59. inline __ENUM_CPPNAME__& operator|=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs)
  60.   { return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
  61.  
  62. /** @ingroup __MODULE_CANONICAL__`'Enums */
  63. inline __ENUM_CPPNAME__& operator&=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs)
  64.   { return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
  65.  
  66. /** @ingroup __MODULE_CANONICAL__`'Enums */
  67. inline __ENUM_CPPNAME__& operator^=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs)
  68.   { return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
  69. ')dnl endif Flags
  70.  
  71. m4_ifelse($5,`NO_GTYPE',,`dnl else
  72. __NAMESPACE_END__
  73.  
  74.  
  75. #ifndef DOXYGEN_SHOULD_SKIP_THIS
  76. namespace Glib
  77. {
  78.  
  79. template <>
  80. class Value<__NAMESPACE__::__ENUM_CPPNAME__> : public __ENUM_VALUE_BASE__
  81. {
  82. public:
  83.   static GType value_type() G_GNUC_CONST;
  84. };
  85.  
  86. } // namespace Glib
  87. #endif /* DOXYGEN_SHOULD_SKIP_THIS */
  88.  
  89.  
  90. __NAMESPACE_BEGIN__
  91. _PUSH(SECTION_SRC_GENERATED)
  92. // static
  93. GType Glib::Value<__NAMESPACE__::__ENUM_CPPNAME__>::value_type()
  94. {
  95.   return _GET_TYPE_FUNC(__ENUM_CNAME__);
  96. }
  97.  
  98. _POP()
  99. ')dnl endif !NO_GTYPE
  100. ')dnl enddef _ENUM
  101.  
  102.